#ifndef __BILBAO_LANG_LOG_MANAGER_CLASS_H__
#define __BILBAO_LANG_LOG_MANAGER_CLASS_H__

#include "bilbao/types.h"
#include "bilbao/lang/Logger.h"

namespace bilbao
{
	namespace lang
	{
		class Logger;

		class LogManager
		{
		public:

			/**
			 *
			 */
			static LogManager* getLogManager(void);

			/**
			 *
			 */
			Logger* demandLogger( const char* );

			/**
			 *
			 */
			~LogManager(void);

		protected:

			/**
			 *
			 */
			LogManager(void);

			/**
			 *
			 */
			LogManager& operator= (const LogManager&);

			/**
			 *
			 */
			static LogManager* _instance;

			/**
			 *
			 */
			static Logger* _result;

			/**
			 *
			 */
			std::map<const char*, Logger*> loggers;
		};
	} // namespace lang
} // namespace bilbao

#endif//__BILBAO_LANG_LOG_MANAGER_CLASS_H__
